package com.xiaoyu.commonlib.ui.adapter;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;


import com.chad.library.adapter.base.BaseItemDraggableAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

/**
 * Created by jx on  2018/4/8;
 * 万能适配器，只适用于recycleradapter
 */

public class AllPowerfulAdapter<T> extends BaseItemDraggableAdapter<T, BaseViewHolder> {

    public AllPowerfulAdapter(int layoutResId, List data) {
        super(layoutResId, data);

        initAdapter();
    }

    @Override
    public void setData(int index, @NonNull T data) {
        super.setData(index, data);
    }



    @Override
    public void setNewData(@Nullable List<T> data) {
        super.setNewData(data);
    }

    @Override
    public void addData(@NonNull T data) {
        super.addData(data);
    }


    public AllPowerfulAdapter(int layoutResId, List data, OnClickListener<T> onClickListener) {
        super(layoutResId, data);
        this.onClickListener = onClickListener;
        initAdapter();
    }
    //这里设置了不让某几个item不显示动画以及设置动画效果，避免了在每一个类都写重复操作！
    //默认提供5种方法（渐显、缩放、从下到上，从左到右、从右到左）
    private void initAdapter() {
        setNotDoAnimationCount(3);//设置前几个Item不显示动画
        openLoadAnimation(BaseQuickAdapter.SLIDEIN_BOTTOM);//设置动画样式
    }

    /**
     * 点击整个item获得点击事件
     * @param baseViewHolder
     * @param t
     */
    @Override
    protected void convert(final BaseViewHolder baseViewHolder, final T t) {
        //第一种item点击方式
        baseViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onClickListener != null)
                
                    onClickListener.setOnClick(baseViewHolder,t,getViewHolderPosition(baseViewHolder));
            }
        });
    }
    private OnClickListener<T> onClickListener;

    public interface OnClickListener<T>{
        void setOnClick(BaseViewHolder baseViewHolder, T t, int position);
    }
    /**
     * 备注：第二种item点击方式
     * recyclerView 中item 的点击事件：
     *      注意：removeOnItemTouchListener必须写到addOnItemTouchListener前边
     *
     *      mRecyclerView.removeOnItemTouchListener(listener);
     *      mRecyclerView.addOnItemTouchListener(listener);
     *
     *      //item 点击事件
     *      OnItemChildClickListener listener = new OnItemChildClickListener() {
     *          @Override
     *          public void onSimpleItemChildClick(BaseQuickAdapter adapter, View view, int position) {
     *              Log.i("jx","item的点击事件");
     *          }
     *      };
     *
     */
}


